main() {
  // 多态：父类的引用可以指向子类的对象
  Payment alipay = new Alipay();
  alipay.pay(100);

  // 多态：父类的引用可以指向子类的对象
  Payment wechatPay = new WechatPay();
  wechatPay.pay(200);

  // 多态：父类的引用可以指向子类的对象
  Payment unionPay = new UnionPay();
  unionPay.pay(300);
}

// 抽象类，就是定义类的标准，规范
abstract class Payment {
  // 抽象方法，没有方法体
  void pay(double amount);
}

// 实现类，就是实现抽象类的方法
class Alipay implements Payment {
  @override
  void pay(double amount) {
    print('支付宝支付: ¥$amount');
  }
}

// 实现类，就是实现抽象类的方法
class WechatPay implements Payment {
  @override
  void pay(double amount) {
    print('微信支付: ¥$amount');
  }
}

// 实现类，就是实现抽象类的方法
class UnionPay implements Payment {
  @override
  void pay(double amount) {
    print('银联支付: ¥$amount');
  }
}
